package com.autumn.zero.workflow.services;

import com.autumn.zero.workflow.entitys.AbstractWorkflowDefinition;

/**
 * 工作流定义基础
 * 
 * @author 杨昌国 2018-12-24 10:26:10
 * @param <TWorkflowDefinition>
 */
public interface IWorkflowDefinitionServiceBase<TWorkflowDefinition extends AbstractWorkflowDefinition> {

	/**
	 * 添加
	 * 
	 * @param workflowDefinition 工作流定义
	 */
	void add(TWorkflowDefinition workflowDefinition);

	/**
	 * 更新
	 * 
	 * @param workflowDefinition 工作流定义
	 */
	void update(TWorkflowDefinition workflowDefinition);

	/**
	 * 根据主键查询
	 * 
	 * @param id 主键
	 * @return
	 */
	TWorkflowDefinition queryById(long id);

	/**
	 * 根据主键删除
	 * 
	 * @param id 主键
	 */
	void deleteById(long id);

	/**
	 * 更新状态
	 * 
	 * @param id     主键
	 * @param status 状态 {@link com.autumn.zero.workflow.constants.ProcessDesignStatusConstants}
	 */
	void updateByStatus(long id, int status);

	/**
	 * 更新流程内容
	 * 
	 * @param id  主键
	 * @param xml xml
	 */
	void updateByProcessContent(long id, String xml);

}
